package com.it.web;

import com.it.pojo.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;

@Controller
public class HelloController {
    /**
     * http:localhost:8080/hello===>直接访问当前注解作用的方法===》hello==》
     * 视图解析器解析 /WEB-INF/pages/+success+.jsp
     * @return
     *
     * 注解@RequestMapping可注解类上（窄化路径作用）或方法上（访问路径）
     * value/path 限定访问当前的url路径
     * method 限定请求方式
     * params  限定必须有指定的参数
     * headers 限定请求头必须携带参数
     */
    @RequestMapping(value = "/hello",params = "name",method = RequestMethod.GET)
    public String hi() {
        return "success";
    }

    /**
     * 使用ConvertServlet自定义转换器
     * @param birthday
     * @return
     */
    @RequestMapping("/birthday")
    public String convertBirthday(Date birthday) {
        System.out.println(birthday);
        return "success";
    }


    /**
     * 使用@DateTimeFormat处理方式
     * @param birthday
     * @return
     */
    @RequestMapping("/birthday1")
    public String convertBirthday1(@DateTimeFormat(pattern = "yyyy-MM-dd")Date birthday) {
        System.out.println(birthday);
        return "success";
    }

    /**http://localhost:8080/hello1?username=xiaoxin
     * 基本类型和String
     * @param name
     * @return
     * 方法上形参参数必须和请求参数一样
     *
     * 如果请求参数和形参不一致可以使用：
     *     注解@RequestParam指定请求参数名称
     *           内部属性：
     *                value/name:指定请求参数名称
     *                required：默认值是true,表示必须传入值，否则报错：Required String parameter 'userAge' is not present
     *                       设置为false，不传入，不报错,
     *               defaultValue：设置默认值，开发一般配合required=false一块使用，如果不传入值，则使用默认值
     */
    @RequestMapping("/hello1")
    public String test01(@RequestParam(value = "username",required = false,defaultValue = "xiaoxin") String name) {
        System.out.println(name);
        return "success";
    }


    @RequestMapping("/test02")
    public String test02(User user) {
        System.out.println(user);
        return "success";
    }


}
